package buildcode.language.es;

import java.sql.Types;
import java.util.HashMap;
import java.util.Map;

public class EsUtil {
    private static final Map<Integer, String> JDBC_ES_TYPE_MAP = new HashMap<>();
    private static final Map<String, String> JAVA_ES_TYPE_MAP = new HashMap<>();

    static {
        JDBC_ES_TYPE_MAP.put(Types.BIT, "number");
        JDBC_ES_TYPE_MAP.put(Types.TINYINT, "number");
        JDBC_ES_TYPE_MAP.put(Types.SMALLINT, "number");
        JDBC_ES_TYPE_MAP.put(Types.INTEGER, "number");
        JDBC_ES_TYPE_MAP.put(Types.BIGINT, "number");
        JDBC_ES_TYPE_MAP.put(Types.FLOAT, "number");
        JDBC_ES_TYPE_MAP.put(Types.DOUBLE, "number");
        JDBC_ES_TYPE_MAP.put(Types.NUMERIC, "number");
        JDBC_ES_TYPE_MAP.put(Types.DECIMAL, "number");
        JDBC_ES_TYPE_MAP.put(Types.CHAR, "string");
        JDBC_ES_TYPE_MAP.put(Types.VARCHAR, "string");
        JDBC_ES_TYPE_MAP.put(Types.LONGVARCHAR, "string");
        JDBC_ES_TYPE_MAP.put(Types.DATE, "string");
        JDBC_ES_TYPE_MAP.put(Types.TIME, "string");
        JDBC_ES_TYPE_MAP.put(Types.TIMESTAMP, "string");
        JDBC_ES_TYPE_MAP.put(Types.NCHAR, "string");
        JDBC_ES_TYPE_MAP.put(Types.NVARCHAR, "string");
        JDBC_ES_TYPE_MAP.put(Types.LONGNVARCHAR, "string");
        JDBC_ES_TYPE_MAP.put(Types.SQLXML, "string");
        JDBC_ES_TYPE_MAP.put(Types.TIME_WITH_TIMEZONE, "string");
        JDBC_ES_TYPE_MAP.put(Types.TIMESTAMP_WITH_TIMEZONE, "string");

        JAVA_ES_TYPE_MAP.put("Integer", "number");
        JAVA_ES_TYPE_MAP.put("Long", "number");
        JAVA_ES_TYPE_MAP.put("Double", "number");
        JAVA_ES_TYPE_MAP.put("BigDecimal", "number");
        JAVA_ES_TYPE_MAP.put("String", "string");
        JAVA_ES_TYPE_MAP.put("Date", "string");

    }

    public static final String getEsTypeByJdbcType(int jdbcType) {
        return JDBC_ES_TYPE_MAP.get(jdbcType);
    }

    public static final String getEsTypeByJavaType(String javaType) {
        return JAVA_ES_TYPE_MAP.get(javaType);
    }

}
